understanding constructors